Many executable software programs or applications require access to system-wide, configuration-type information at times when the application is being installed or modified on a computer system, i.e., at configuration time and at the time the application is executed to perform its intended function, i.e., at run time. The application needs to access configuration information related to available resources on the local computer system and through connected computers across a computer network. These resources include available software and hardware tools as well as available services offered by the system that improve the functionality of the program within the overall system.
Accessing this information is typically done through direct access to a “registry” located on each computer system. The registry is simply a place to store and read configuration information. Meanwhile, a transaction management system provides services through embedded logic to an application. The services may relate to such items as security, validation, roles, etc. as well as network communication and conflict management.
The services are typically exploited through an attribute-based programming scheme which allows program developers to specify the services and resources required by an application by setting properties (or “attributes”) of each application or component rather than implementing or calling those services directly from the implementation code. Attributes include a particular set of configuration information that is made available to various callers in an attribute-based environment.
Even in an attribute-based programming environment, the application desiring data and services must know where the information comes from in the system. Moreover, the program typically must know the format that the information is stored in to be able to access the information. In existing approaches, the system registry has been used to store configuration data for a particular machine. However, in existing approaches, a programmer was required to access and manipulate registry information directly, introducing undesirable program complexity and exposing the registry to corruption by improper programming. Moreover, the distribution of configuration information among multiple datastores (i.e., in addition to the registry) and data formats is not accommodated by existing approaches, particularly if the location and format of data is expected to evolve over time. In current approaches, the implementation code itself must be altered in order to handle location and format changes to configuration information. Accordingly, existing approaches lack location and format independence that can provide the desired flexibility for storage and access to configuration information in a computer system.
It is with respect to these and other aspects that the present invention has been made.